package conn;

import utils.IPValidator;

/**
 * Classe utilizzata dal {@link SocketManager} per gestire i dati di connessione relativi al client.
 * @author Claudio "Dna" Bonesana
 */
public class ConnectionData {

    private String username;
    private String server;
    private String port;

    /**
     * @param username  nome utente scelto
     * @param server    indirizzo ip del server scelto
     * @param port      porta del server scelta
     */
    public ConnectionData(String username, String server, String port) {
        this.username = username;
        this.server = server;
        this.port = port;
    }

    /**
     * @return  l'username scelto
     */
    public String getUsername() {
        return username;
    }

    /**
     * @return  l'ip del server scelto
     */
    public String getServer() {
        return server;
    }

    /**
     * @return  la porta scelta
     */
    public int getPort() {
        return Integer.parseInt(port);
    }

    /**
     * Controlla che i dati di connessione scelti siano validi. I dati sono validi se il nome utente è lungo più di 2 caratteri
     * e non inizia con uno "/", se l'ip fornito è valido e se la porta è un intero.
     * @return  true se i dati sono validi, altrimenti false
     */
    public boolean check(){
        if (getUsername().length() < 2)
            return false;
        if (getUsername().startsWith("/"))
            return false;
        if (!IPValidator.validate(getServer()))
            return false;
        try {
            Integer.parseInt(port);
        } catch (Exception e){
            return false;
        }
        return true;
    }
}
